<?php

namespace app\common\model\Post;

use think\Model;
// 引用 软删除
use traits\model\SoftDelete;

class Post extends Model
{
    // 帖子表
    protected $table = 'pre_post';

    // 自动写入时间
    protected $autoWriteTimestamp = true;

    // 创建时间 => 注册时间
    protected $createTime = 'createtime';

    // 更新时间
    protected $updateTime = false;

    protected $dateFormat = 'Y-m-d';

    protected $resultSetType = 'collection'; 

    // 软删除时间
    use SoftDelete;
    protected $deleteTime = 'deletetime';

    // 追加字段
    // protected $append = [
    //     'comment_ount',
    //     'visit_count',
    // ];

    // 关联查询: 分类
    public function cate()
    {
        return $this->belongsTo('app\common\model\Post\Cate', 'cateid', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    // 关联查询：用户
    public function user()
    {
        return $this->belongsTo('app\common\model\User\User', 'userid', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    // 评论总数字段
    public function getCommentCountAttr($value, $data)
    {
        // 查询评论表中的数据
        $count = model('Post.Comment')->where(['postid' => $data['id']])->count();
        return $count;
    }

    // 获取帖子浏览量
    public function getVisitCountAttr($value, $data)
    {
        $visitArr = explode(',', $data['visit']);
        $visitArr = array_filter($visitArr);
        $VisitCount = count($visitArr);
        return $VisitCount;
    }

    // 获取帖子的状态所需要的积分
    public function state()
    {
        // $PointState = model("Config")->where('key', 'like', '%PostState%')->select();
        $PointState1 = model('Config')->where('key', 'PostState1')->value('value');
        $PointState2 = model('Config')->where('key', 'PostState2')->value('value');
        $PointState3 = model('Config')->where('key', 'PostState3')->value('value');
        $PointState = [
            1 => "置顶 {$PointState1}积分",
            2 => "精华 {$PointState2}积分",
            3 => "热门 {$PointState3}积分"
        ];
        return $PointState;
    }
}
